jjzjj

C++ QVariant

全部标签

c++ - 将 QList 转换为 QVariant

类包含这个:Q_PROPERTY(QListswitch1READswitch1WRITEsetSwitch1NOTIFYswitch1Changed)voidsetSwitch2(QListarg){if(m_switch2!=arg){m_switch2=arg;emitswitch2Changed(arg);}}以下作品:setSwitch2(QList::fromVector(QVector::fromStdVector(data->switch2)));但现在我的数据类型是QVariantList而不是QList.我现在应该如何用QVariant替换QList?这行不通:se

c++ - QT - 如何从组合框中检索 QVariant 值?

我正在使用QVariant将对象存储在Qcombobox中,这似乎工作正常。这是实现代码:在标题中为QVariant添加类型:Q_DECLARE_METATYPE(CDiscRecorder*)pDiscRecorder转换为CDiscRecorder:CDiscRecorder*pDiscRecorder=newCDiscRecorder();然后存入comboboxui->cbDrives->addItem(QString::fromWCharArray(strName),QVariant::fromValue(pDiscRecorder));当我尝试将其拉出时出现问题:CDisc

c++ - 将 QVariant 转换为 QVector<int>

转换QVector很容易至QVariant但除此之外并非微不足道QVectorv;v.append(1);v.append(2);v.append(3);QVariantvar=QVariant::fromValue(v);QVectorv2(var.toList().toVector());//fails,returnsQVector首先:是否有任何Qt习惯用法可以自动将其转换回去,或者我是否必须手动迭代var.toList()收藏?此外,整个操作的成本相当高:首先是一个QList被构建,然后是一个QVector被构建,那么QVector被复制回v2.有什么方法可以转换QVarian

c++ - QVariant 的多态性

我有两个这样的类:classFoo{public:Foo(inti):_i(i){}int_i;};Q_DECLARE_METATYPE(Foo*)classBar:publicFoo{public:Bar(inti,intj):Foo(i),_j(j){}int_j;};Q_DECLARE_METATYPE(Bar*)我的长凳是这样的:intmain(intargc,char*argv[]){QApplicationa(argc,argv);Bar*bar=newBar(10,11);QVariantvar=QVariant::fromValue(bar);Foo*foo=var.v

c++ - 我如何将 Qt 的 QVariant 转换为 boost::any?

如何将Qt的QVariant转换为boost::any? 最佳答案 我认为没有简单的方法,我会做以下事情:boost::anyqvariant_to_any(constQVariant&v){switch(v.userType()){caseQVariant::Bool:returnboost::any(v.value());//or:returnboost::any(v.toBool());caseQVariant::Int:returnboost::any(v.value());//or:returnboost::any(v.t

c++ - QMetaType::Float 不在 QVariant::Type 中

我有一个运行良好的应用程序,但它不是在打开警告的情况下编译的。我正在尝试将其重新打开并整理它们,但没有关于如何解决此问题的想法。我有:QVariantsomeVarQVariant::TypevariantType=someVar.type();switch(variantType){caseQMetaType::QString:doSomething1();break;caseQMetaType::Float:doSomething2();break;}并收到此警告/错误:error:casevalue‘135’notinenumeratedtype‘QVariant::Type’[

c++ - 如何将 QMap<QString, QMap<QString, int>> 转换为 QVariant?

QVariant(需要QSettings类)支持从QMap创建但是尝试初始化这样的东西:QMap)>i;给出错误:functionreturningafunction.然后我尝试了QMapQVariant()过载得到了error:nomatchingfunctionforcalltoQVariant::QVariant(QMap>&)现在我尝试了一个类型转换:QMap>i;得到了templateargument2isinvalidinvalidtypeindeclarationbefore';'token那么转换嵌套QMap所需的巫术是什么?到QVariant对象?

c++ - Qt - 没有匹配函数来调用 ‘QVariant::QVariant(MyClass&)’

我在创建具有自定义类型的QVariant时遇到问题。这是一个小例子,展示了我想要实现的目标:主要.cpp:#include"MyClass.h"intmain(){MyClasssome_object;QVariantvariant(some_object);return0;}包含/MyClass.h:#pragmaonce#includeclassMyClass{public:MyClass():_my_member(0.0){}MyClass(constMyClass&other){_my_member=other._my_member;}~MyClass(){}MyClass&o

c++ - Qt:将数字转换为 QString、QVariant 或 QString::number 哪个更好

我只是好奇。比方说,我需要在控制台中输出一个数字。代码为:#include#include#includevoiddisplayNumber(quint8number){qDebug()哪个性能更好?我认为内存消耗也不同。QVariant(number).toString()意味着它将QVariant存储在堆栈中。不确定QString::number(),它不应该只调用该函数(当然,该函数有一个QString返回,所以它也在堆栈上分配并占用该空间和分配和取消分配它的操作)?无论如何,sizeof()为QVariant提供了16个字节,为QString提供了4个字节。

c++ - 带有 std::shared_ptr 的 QVariant

我有以下问题,我正在使用Q_DECLARE_METATYPE(std::shared_ptr);qRegisterMetaType>();QMetaType::registerComparators>();使用std::shared_ptr与例如QList模型。我需要一种行为QVariant::fromValue(std::shared_ptr(newint(5)))==QVariant::fromValue(std::shared_ptr(newint(5)))是真的。自std::shared_ptr::operator==()以来,我上面的代码在这里返回false比较原始指针。是否